const request = require('./request.js').default;

/**
 * 用户档案相关 API（灵曜页面专用）
 */
const userProfileAPI = {
  /**
   * 获取当前用户完整档案信息（灵曜页面数据）
   */
  getMyProfile: () => request('/user-profile/profile', 'GET'),

  /**
   * 获取指定用户的档案信息
   * @param {number} userId - 用户ID
   */
  getUserProfile: (userId) => request(`/user-profile/profile/${userId}`, 'GET'),

  /**
   * 获取当前用户徽章列表
   */
  getMyBadges: () => request('/user-profile/badges', 'GET'),

  /**
   * 获取指定用户的徽章列表
   * @param {number} userId - 用户ID
   */
  getUserBadges: (userId) => request(`/user-profile/badges/${userId}`, 'GET'),

  /**
   * 更新用户个性签名
   * @param {string} signature - 个性签名
   */
  updateSignature: (signature) => request(`/user-profile/signature?signature=${encodeURIComponent(signature)}`, 'PUT'),

  /**
   * 记录用户协议同意
   * @param {Object} agreementData - 协议同意数据
   */
  recordUserAgreement: (agreementData) => request('/user-profile/agreement', 'POST', agreementData),

  /**
   * 检查用户是否已同意协议
   * @param {string} agreementType - 协议类型
   * @param {string} agreementVersion - 协议版本（可选）
   */
  checkUserAgreement: (agreementType, agreementVersion) => {
    let url = `/user-profile/agreement/check?agreementType=${encodeURIComponent(agreementType)}`;
    if (agreementVersion) {
      url += `&agreementVersion=${encodeURIComponent(agreementVersion)}`;
    }
    return request(url, 'GET');
  },

  /**
   * 获取当前用户积分信息
   */
  getMyPoints: () => request('/user-profile/points', 'GET'),

  /**
   * 获取指定用户的积分信息
   * @param {number} userId - 用户ID
   */
  getUserPoints: (userId) => request(`/user-profile/points/${userId}`, 'GET'),

  /**
   * 获取用户统计数据
   * @param {number} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserStats: (userId) => {
    if (userId) {
      return request(`/user-profile/profile/${userId}`, 'GET').then(res => res.data.stats);
    } else {
      return request('/user-profile/profile', 'GET').then(res => res.data.stats);
    }
  },

  /**
   * 获取用户基本信息（简化版）
   * @param {number} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserBasicInfo: (userId) => {
    if (userId) {
      return request(`/user-profile/profile/${userId}`, 'GET').then(res => ({
        userId: res.data.userId,
        nickname: res.data.nickname,
        avatarUrl: res.data.avatarUrl,
        title: res.data.title,
        signature: res.data.signature,
        level: res.data.level
      }));
    } else {
      return request('/user-profile/profile', 'GET').then(res => ({
        userId: res.data.userId,
        nickname: res.data.nickname,
        avatarUrl: res.data.avatarUrl,
        title: res.data.title,
        signature: res.data.signature,
        level: res.data.level
      }));
    }
  }
};

module.exports = userProfileAPI;
